package com.qk.entity;

import jakarta.validation.constraints.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 商机实体类
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Business {

    /**
     * 商机id, 主键
     */
    private Integer id;

    /**
     * 客户姓名
     */
    @NotBlank(message = "客户姓名不能为空")
    @Size(max = 20, message = "客户姓名长度不能超过20个字符")
    private String name;

    /**
     * 手机号
     */
    @NotBlank(message = "手机号不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号格式不正确")
    private String phone;

    /**
     * 性别，1:男, 2:女
     */
    @Min(value = 1, message = "性别值必须大于0")
    @Max(value = 2, message = "性别值不能大于2")
    private Integer gender;

    /**
     * 年龄
     */
    @Min(value = 0, message = "年龄不能为负数")
    @Max(value = 150, message = "年龄值不合理")
    private Integer age;

    /**
     * 微信号
     */
    private String wechat;

    /**
     * qq号
     */
    private String qq;

    /**
     * 意向学科，1:AI智能应用开发(java), 2:AI大模型开发(python)，3:AI鸿蒙开发，4:AI大数据，5:AI嵌入式，6:AI测试，7:AI运维
     */
    @Min(value = 1, message = "意向学科值必须大于0")
    @Max(value = 7, message = "意向学科值不能大于7")
    private Integer subject;

    /**
     * 意向课程, 课程id
     */
    private Integer courseId;

    /**
     * 学历, 1:高中、2:中专、3:大专、4:本科、5:硕士、6:博士、7:其他
     */
    @Min(value = 1, message = "学历值必须大于0")
    @Max(value = 7, message = "学历值不能大于7")
    private Integer degree;

    /**
     * 在职情况, 1: 在职, 0: 离职
     */
    @Min(value = 0, message = "在职状态值不能为负数")
    @Max(value = 1, message = "在职状态值不能大于1")
    private Integer jobStatus;

    /**
     * 渠道来源，1:线上活动, 2:推广介绍
     */
    @NotNull(message = "渠道来源不能为空")
    @Min(value = 1, message = "渠道来源值必须大于0")
    @Max(value = 2, message = "渠道来源值不能大于2")
    private Integer channel;

    /**
     * 备注
     */
    private String remark;

    /**
     * 商机状态，1:待分配, 2:待跟进, 3:跟进中, 4:回收, 5:转客户
     */
    @NotNull(message = "商机状态不能为空")
    @Min(value = 1, message = "商机状态值必须大于0")
    @Max(value = 5, message = "商机状态值不能大于5")
    private Integer status;

    /**
     * 归属人id，关联用户id
     */
    private Integer userId;

    /**
     * 归属线索id
     */
    private Integer clueId;

    /**
     * 下次跟进时间
     */
    private LocalDateTime nextTime;

    /**
     * 创建时间
     */
    @NotNull(message = "创建时间不能为空")
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    @NotNull(message = "修改时间不能为空")
    private LocalDateTime updateTime;
}
